#include "Cuaderno.h"

//#include <sys/types.h>
//#include <sys/ipc.h>
//#include <sys/shm.h>
//#include <stdio.h>

#include <iostream>

using namespace std;

Cuaderno::Cuaderno(char* nombre, int size){
	this->indice = 0;
	this->tam = size;
	
	key_t clave = ftok(nombre,'r');
	if(clave==-1)
		cout<<"Error al crear la clave de sharedmemory ("<< nombre <<")"<<endl;
 
	this->shmid = shmget(clave, sizeof(int)*this->tam, IPC_CREAT | 0666 );
	if(this->shmid==-1)
		cout<<"Error al crear la sharedmemory del cuaderno"<<endl;

	void* temp = shmat(this->shmid, NULL, 0);
	if(temp==(void *)-1)
		cout<<"Error al attachar la sharedmemory del cuaderno"<<endl;
	
	this->cola=(int*)temp;
}

Cuaderno::~Cuaderno(){
	shmdt((void *)this->cola);
	shmctl(this->shmid,IPC_RMID,NULL);
}

void Cuaderno::add(int monto){
	if (indice == this->tam){
		for (int i=1; i<this->tam; i++)	{			
			this->cola[i-1] = this->cola[i];
		}
	} else {
		indice++;
	}
	this->cola[indice-1] = monto;
}

int Cuaderno::get(int index){
	if (index < indice){
		return this->cola[index];
	} else {
		cout << "Error al chequear cuaderno" <<endl;
		return 0;
	}
}

int Cuaderno::size(){
	return this->indice;
}




